package utils

import (
	"crypto/md5"
	"fmt"
	"strings"

	"github.com/anaskhan96/go-password-encoder"
)

// GetPassword 生成密码
func GetPassword(pwd string) string {
	//1. 10：表示salt的长度。
	//2. 10000：表示密码的强度。
	//3. 50：表示密码的复杂度。
	//4. md5.New：表示密码的加密算法。
	options := &password.Options{10, 10000, 50, md5.New}
	salt, encodedPwd := password.Encode(pwd, options)
	//pbkdf2-sha512使用$进行拼接
	newPassword := fmt.Sprintf("$pbkdf2-sha512$%s$%s", salt, encodedPwd)
	return newPassword
}

// CheckPassword 校验密码
func CheckPassword(pwd, encodedPwd string) bool {
	options := &password.Options{10, 10000, 50, md5.New}
	pwdSlice := strings.Split(encodedPwd, "$")
	fmt.Println(pwdSlice)
	check := password.Verify(pwd, pwdSlice[2], pwdSlice[3], options)
	return check
}
